#include "ComponentWidget.h"
#include <QPainter>
#include <QContextMenuEvent>
#include <QMenu>
#include <QAction>
#include <QMessageBox>  // 仅用于临时占位

ComponentWidget::ComponentWidget(QWidget* parent) : QWidget(parent) {
    // 启用右键菜单（必备配置）
    setContextMenuPolicy(Qt::CustomContextMenu);
}

ComponentWidget::~ComponentWidget() {
    // 空析构（无需额外操作）
}

void ComponentWidget::setComponent(Component* component) {
    m_component = component;
    // 简化：仅关联信号（不实现具体逻辑）
    if (m_component) {
        connect(m_component, &Component::onParamUpdate,
            this, &ComponentWidget::onParamUpdated);
    }
}

void ComponentWidget::contextMenuEvent(QContextMenuEvent* event) {
    // 简化：仅显示菜单，点击无实际功能
    QMenu menu(this);
    menu.addAction("修改参数", this, &ComponentWidget::onModifyParams);
    menu.exec(event->globalPos());  // 显示菜单
}

void ComponentWidget::paintEvent(QPaintEvent* event) {
    Q_UNUSED(event);
    // 极简绘图：画一个灰色矩形表示组件
    QPainter painter(this);
    painter.fillRect(10, 10, 80, 50, Qt::lightGray);  // 基础图形
    painter.drawText(20, 40, "组件");  // 简单文字标识
}

void ComponentWidget::onModifyParams() {
    // 简化：仅弹窗提示，无实际参数修改逻辑
    QMessageBox::information(this, "提示", "修改参数功能待实现");
}

void ComponentWidget::onParamUpdated(const ComponentParam& param) {
    // 空实现：仅触发重绘
    update();  // 刷新界面（无实际逻辑）
}
